]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
ScreenShield: show the unlock dialog on the primary monitor when using the keyboard
authorGiovanni Campagna <gcampagna@src.gnome.org>
Sun, 14 Oct 2012 16:34:22 +0000 (18:34 +0200)
committerGiovanni Campagna <gcampagna@src.gnome.org>
Mon, 15 Oct 2012 20:45:19 +0000 (22:45 +0200)
Make ModalDialog.open() accept an optional onPrimary argument, and
pass it when the dialog is activated using ESC or Return.

https://bugzilla.gnome.org/show_bug.cgi?id=685855

js/ui/layout.js
js/ui/modalDialog.js
js/ui/screenShield.js

index c399d421ee91f204528db8ff522c1ac5b6eabb96..ad260ec3282249545c0fe9c4514321f4a29d584c 100644 (file)
@@ -43,6 +43,8 @@ const MonitorConstraint = new Lang.Class({
     },
 
     set primary(v) {
+        if (v)
+            this._index = -1;
         this._primary = v;
         if (this.actor)
             this.actor.queue_relayout();
@@ -54,6 +56,7 @@ const MonitorConstraint = new Lang.Class({
     },
 
     set index(v) {
+        this._primary = false;
         this._index = v;
         if (this.actor)
             this.actor.queue_relayout();
index 3f7233f9a88f433782d4a8a2e9e5853121eeeeba..71fbfc7810cb8483bd727992319445206190eee3 100644 (file)
@@ -202,8 +202,11 @@ const ModalDialog = new Lang.Class({
         this.emit('destroy');
     },
 
-    _fadeOpen: function() {
-        this._monitorConstraint.index = global.screen.get_current_monitor();
+    _fadeOpen: function(onPrimary) {
+        if (onPrimary)
+            this._monitorConstraint.primary = true;
+        else
+            this._monitorConstraint.index = global.screen.get_current_monitor();
 
         this.state = State.OPENING;
 
@@ -236,14 +239,14 @@ const ModalDialog = new Lang.Class({
         }));
     },
 
-    open: function(timestamp) {
+    open: function(timestamp, onPrimary) {
         if (this.state == State.OPENED || this.state == State.OPENING)
             return true;
 
         if (!this.pushModal(timestamp))
             return false;
 
-        this._fadeOpen();
+        this._fadeOpen(onPrimary);
         return true;
     },
 
index 4674e65783f5d015d4023cfd9c66c03f7e21d3b9..d5ca644fd0689960614cb84d7cc8615e74676d1c 100644 (file)
@@ -453,7 +453,7 @@ const ScreenShield = new Lang.Class({
         if (symbol == Clutter.KEY_Escape ||
             symbol == Clutter.KEY_Return ||
             symbol == Clutter.KEY_KP_Enter) {
-            this._ensureUnlockDialog();
+            this._ensureUnlockDialog(true);
             this._hideLockScreen(true);
             return true;
         }
@@ -476,7 +476,7 @@ const ScreenShield = new Lang.Class({
 
         // 7 standard scrolls to lift up
         if (this._lockScreenScrollCounter > 35) {
-            this._ensureUnlockDialog();
+            this._ensureUnlockDialog(false);
             this._hideLockScreen(true);
         }
 
@@ -508,7 +508,7 @@ const ScreenShield = new Lang.Class({
     _onDragBegin: function() {
         Tweener.removeTweens(this._lockScreenGroup);
         this._lockScreenState = MessageTray.State.HIDING;
-        this._ensureUnlockDialog();
+        this._ensureUnlockDialog(false);
     },
 
     _onDragEnd: function(action, actor, eventX, eventY, modifiers) {
@@ -585,7 +585,7 @@ const ScreenShield = new Lang.Class({
 
         this.actor.show();
         this._isGreeter = Main.sessionMode.isGreeter;
-        this._ensureUnlockDialog();
+        this._ensureUnlockDialog(true);
         this._hideLockScreen(false);
     },
 
@@ -632,7 +632,7 @@ const ScreenShield = new Lang.Class({
             Main.sessionMode.popMode('lock-screen');
     },
 
-    _ensureUnlockDialog: function() {
+    _ensureUnlockDialog: function(onPrimary) {
         if (!this._dialog) {
             let constructor = Main.sessionMode.unlockDialog;
             this._dialog = new constructor(this._lockDialogGroup);
@@ -642,8 +642,9 @@ const ScreenShield = new Lang.Class({
                 return;
             }
 
+            let time = global.get_current_time();
             this._dialog.connect('loaded', Lang.bind(this, function() {
-                if (!this._dialog.open()) {
+                if (!this._dialog.open(time, onPrimary)) {
                     log('Could not open login dialog: failed to acquire grab');
                     this.unlock();
                 }